#ifndef BASEREADER_H
#define BASEREADER_H
#include <QDebug>
#include <QList>
#include <QStringList>
#include <QString>
#include <QFile>
#include <QTextStream>
#include "person.h"

/**
 * @file basereader.h
 * @author  Paweł Hanejko <phanejko@gmail.com>
 * @version 1.0
 *
 * @section LICENSE
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details at
 * http://www.gnu.org/copyleft/gpl.html
 *
 * @section DESCRIPTION
 *
 * Plik nagłównkowy zawiera definicję klasy BaseReader,
 * którą wykorzystuje się do odczytu użytkowników z pliku basefile.
 */

class BaseReader
{

private:
    /**
    * @param line linia z pliku basefile
    * @return Wskaźnik na użytkownika (Person*) otrzymany z linni
    **/
    Person* extractPerson(QString line)
    {

        QStringList list=line.split("#");
        return new Person(list.at(0),list.at(1),list.at(2),list.at(3).split(";"));

    }

public:

    /**
    * @param basefile ścieżka do pliku basefile
    * @return Wskaźnik na listę wskaźników użytkowników (QList<Person*>*) otrzymany z pliku basefile
    **/

    QList<Person*>* read(QString basefile)
    {
        QList<Person*>* persons=new QList<Person*>();
        QFile file(basefile);
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
            return NULL;

        QTextStream in(&file);
        while (!in.atEnd())

            persons->append(extractPerson(in.readLine()));

        return persons;
    }
};

#endif // BASEREADER_H
